Comparing join values in database systems

ABSTRACT

The present disclosure describes methods, systems, and computer program products for performing JOIN value comparisons. One computer-implemented method includes converting, by operation of a computer system, a first value of a first data type into a second value of a second data type, wherein the first value is a value of a first attribute of a first table; converting, by operation of a computer system, the second value of the second data type into a third value of a third data type; converting, by operation of a computer system, a fourth value of the third data type into a fifth value of the second data type, wherein the fourth value is a value of a second attribute of a second table; converting, by operation of a computer system, the fifth value of the second data type into a sixth value of the first data type; and performing JOIN operations of the first table and the second table in response to determining that the first value equals the sixth value, and the fourth value equals the third value.

BACKGROUND

A JOIN operation in a database system is a means for combining fieldsfrom two or more tables by using values common to each and can create aset that can be saved as a table or used as-is. For example, a JOINoperation in Structured Query Language (SQL) can match rows of one tablewith rows of another table, based on values in those rows. Determiningwhether it is possible to JOIN values of different types can beextremely inefficient and computationally expensive.

SUMMARY

The present disclosure relates to computer-implemented methods,computer-readable media, and computer systems for performing JOIN valuecomparisons. One computer-implemented method includes converting, byoperation of a computer system, a first value of a first data type intoa second value of a second data type, wherein the first value is a valueof a first attribute of a first table; converting, by operation of acomputer system, the second value of the second data type into a thirdvalue of a third data type; converting, by operation of a computersystem, a fourth value of the third data type into a fifth value of thesecond data type, wherein the fourth value is a value of a secondattribute of a second table; converting, by operation of a computersystem, the fifth value of the second data type into a sixth value ofthe first data type; and performing JOIN operations of the first tableand the second table in response to determining that the first valueequals the sixth value, and the fourth value equals the third value.

Other implementations can include corresponding computer systems,apparatuses, and computer programs recorded on one or more computerstorage devices, each configured to perform the actions of the methods.A system of one or more computers can be configured to performparticular operations or actions by virtue of having software, firmware,hardware, or a combination of software, firmware, or hardware installedon the system that in operation causes the system to perform theactions. One or more computer programs can be configured to performparticular operations or actions by virtue of including instructionsthat, when executed by data processing apparatus, cause the apparatus toperform the actions.

The foregoing and other implementations can each optionally include oneor more of the following features, alone or in combination:

A first aspect, combinable with the general implementation, furthercomprising determining, by operation of the computer system, whether thesecond data type is able to be converted to the third data type; andwherein converting the second value of the second data type into thethird value of a third data type includes converting the second value ofthe second data type into the third value of a third data type inresponse to determining that the second data type is able to beconverted to the third data type.

A second aspect, combinable with any of the previous aspects, furthercomprising determining, by operation of the computer system, whether thesecond data type is able to be converted to the third data type; andrefraining from performing JOIN operations of the first table and thesecond table in response to determining that the second data type is notable to be converted to the third data type.

A third aspect, combinable with any of the previous aspects, furthercomprising determining, by operation of the computer system, whether thesecond data type is able to be converted to the first data type; andwherein converting the fifth value of the second data type into thesixth value of the first data type comprises converting the fifth valueof the second data type into the sixth value of the first data type inresponse to determining the second data type is able to be converted tothe first data type.

A fourth aspect, combinable with any of the previous aspects, furthercomprising determining, by operation of the computer system, whether thesecond data type is able to be converted to the first data type; andrefraining from performing JOIN operations of the first table and thesecond table in response to determining that the second data type is notable to be converted to the first data type.

A fifth aspect, combinable with any of the previous aspects, wherein thesecond data type comprises a string type.

A sixth aspect, combinable with any of the previous aspects, whereineach of the first data type and the third data type comprises a numerictype.

The subject matter described in this specification can be implemented inparticular implementations so as to realize one or more of the followingadvantages. The example techniques can be applied to large, complexdatasets that support a number of different data types. The exampletechniques can improve the efficiency, reduce the computationalcomplexity, and ensure the condition of JOIN conditions to be satisfiedbefore performing JOIN operations on tables. For example, the number ofconversion functions needed can be reduced by an order of magnitude,from N to 2*√{square root over (N)}. In one use case with N=2500, thenumber of conversion functions needed reduces from 2500 down to 100.Besides, the symmetry apparent in a join condition like A.x=B.y isrespected in evaluation. Other advantages will be apparent to thoseskilled in the art.

The details of one or more implementations of the subject matter of thisspecification are set forth in the accompanying drawings and thedescription below. Other features, aspects, and advantages of thesubject matter will become apparent from the description, the drawings,and the claims.

DESCRIPTION OF DRAWINGS

FIG. 1A is a flow chart illustrating a method for performing JOIN valuecomparisons according to an implementation.

FIG. 1B is a block diagram illustrating aspects of the method forperforming JOIN value comparisons according to an implementation.

FIG. 2 is a block diagram of an exemplary computer that can be used forperforming JOIN value comparisons according to an implementation.

Like reference numbers and designations in the various drawings indicatelike elements.

DETAILED DESCRIPTION

The following detailed description is presented to enable any personskilled in the art to make, use, and/or practice the disclosed subjectmatter, and is provided in the context of one or more particularimplementations. Various modifications to the disclosed implementationswill be readily apparent to those skilled in the art, and the generalprinciples defined herein may be applied to other implementations andapplications without departing from scope of the disclosure. Thus, thepresent disclosure is not intended to be limited to the described and/orillustrated implementations, but is to be accorded the widest scopeconsistent with the principles and features disclosed herein.

In some instances, a database system can support a large number (e.g.,tens or up to hundreds) of different data types that can include, forexample, numeric types, date and time types, string (character and byte)types, and spatial types. The numeric types can further include exactnumeric data types (e.g., INTEGER, SMALLINT, DECIMAL, and NUMERIC), andapproximate numeric data types (e.g., FLOAT, REAL, and DOUBLEPRECISION). The string types can include, for example, CHAR, VARCHAR,BINARY, VARBINARY, BLOB, TEXT, ENUM, and SET. Additional or differentdata types can be supported and used. Tables stored in a database caninclude attributes represented by one or more of the data types. In someimplementations, two or more tables to be JOINed can have attributes ofdifferent numeric types.

For example, a user (e.g., a programmer) can write a query including aJOIN statement to identify records for JOINing. An example query canresemble:

SELECT * FROM A, B WHERE A · x = B · y

where A and B are two tables stored in one or more databases (e.g., acolumn-store or other database), x is an attribute of table A, and y isan attribute of table B. “A.x=B.y” is an example predicate or JOINcondition. If the evaluated predicate is true, a JOIN operation is thenperformed to produce a combined record in the expected format (e.g., thecombined record can be a record set or a temporary table). In somecases, the attribute A.x is of a data type Tx (E.G., INTEGER), whileattribute B.y is of another data type Ty (e.g., FLOAT). Assume A.x=Vx,where the value Vx is represented using the data type Tx, and B.y=Vy,where the value Vy is represented using the data type Ty.

Example described techniques can be used for performing JOIN valuecomparisons to determine whether a particular JOIN condition issatisfied (i.e., two attributes in two tables of different butcompatible numeric types can be JOINed). For example, the exampletechniques can compare values Vx and Vy to determine whether the JOINpredicate, “A.x=B.y” is met for them. If Vx and Vy match, then the pair(Vx, Vy) becomes part of the evaluation result of the JOIN predicate“A.x=B.y”, otherwise it doesn't.

FIG. 1A is a flow chart illustrating a method 100 for performing JOINvalue comparisons according to an implementation. FIG. 1B is a blockdiagram 115 showing some steps of the example method 100. The method 100can be performed, for example, by the example computer or computersystem as described with respect to FIG. 2, or any other suitablesystem, environment, software, and hardware, or a combination ofsystems, environments, software, and hardware as appropriate. In someimplementations, various steps of method 100 can be run in parallel, incombination, in loops, and/or in any order.

At a high level, the example method 100 can evaluate a JOIN conditionlike A.x=B.y on two columns, a first attribute A.x of a first table Aand a second attribute B.y of a second table B. Every value in the firstcolumn A.x can be compared to every value in the second column B.y. Interms of the computational effort of a JOIN operation, if column A.x hasN entries and B.y has M, then N*M comparisons of value pairs need to beevaluated. FIG. 1A and FIG. 1B describes an example evaluation of a JOINcondition A.x=B.y for a single pair of values, where the value of theattribute A.x is V1 of a first data type T1 while the value of theattribute B.y is V4 of a third data type T3.

At 110, the first value V1 of the first data type T1 is converted into asecond value of a second data type T2. In some implementations, thefirst data type T1 can be a numeric type (e.g., a FLOAT type) while thesecond data type T2 can be a string type (e.g., a CHAR type). Forinstance, V1 can be a number 3.14; the number can be converted into V2,a string of characters, ‘3,’ ‘.,’ ‘1,’ and ‘4.’ From 110, method 100proceeds to 110.

At 120, whether the second data type T2 is able to be converted to thethird data type T3 is determined. T3 is the data type of the value V4 ofthe attribute y of the second table B. In some implementations, thethird data type T3 can be a numeric type the same or different from thefirst data type T1. For example, T3 can be a DOUBLE PRECISION type whileT1 can be an INTEGER, FLOAT, or another data type. If the conversionfrom T2 to T3 cannot be performed, for example, if the string typecannot represent a certain numeric type, method 100 proceeds from 120 to105; otherwise, method 100 proceeds from 120 to 130.

At 130, in response to determining that the second data type T2 is ableto be converted to the third data type T3, the second value V2 of thesecond data type T2 is converted into a third value V3 of the third datatype T3. From 130, method 100 proceeds to 140.

At 140, the fourth value V4 of the third data type T3 is converted intoa fifth value V5 of the second data type T2. The fourth value V4 is thevalue of the second attribute y of the second table B. As an example,the third data type T3 can be a numeric data type that is convertible tothe second data type T2 that is a string type. As such, the value V4 canbe represented as a string of characters, denoted as V5. From 140,method 100 proceeds to 150.

At 150, whether the second data type T2 is able to be converted to thefirst data type T1, can be determined. T1 is the data type of the valueV1 of the first attribute x of the first table A. If the conversion fromT2 to T1 cannot be performed, the method 100 proceeds from 150 to 105where the method 100 stops; otherwise, method 100 proceeds from 150 to160.

At 160, in response to determining that the second data type T2 is ableto be converted to the first data type T1, the fifth value V5 of thesecond data type T2 is converted into a sixth value V6 of the first datatype T1.

At 170, whether the fourth value V4 equals the third value V3 isdetermined. Here, both V3 and V4 are of the same data type, T3, the datatype of the value V4 of the attribute y of the second table B. If thevalues of V3 and V4 are the same, the method 100 proceeds from 170 to105 where the method stops; otherwise, method 100 proceeds from 170 to180.

At 180, whether the sixth value V6 equals the first value V1 isdetermined. Both V1 and V6 are of the same data type, T1, the data typeof the value V1 of the first attribute x of the first table A. If thevalues of V1 and V6 are the same, the method 100 proceeds from 180 to105 where the method 100 stops; otherwise, method 100 proceeds from 180to 190.

At 190, JOIN operations of the first table and the second table areperformed in response to determining that the first value V1 equals thesixth value V6, and the fourth value V4 equals the third value V3. Inthis case, the predicate or JOIN condition is satisfied; the JOINoperations can be performed. After 190, method 100 stops.

At 105, it is considered that the JOIN condition (e.g., the predicateA.x=B.y) is not satisfied; the JOIN operations of the first table andthe second table will not be performed. After 105, method 100 stops.

FIG. 2 is a block diagram 200 of an exemplary computer 202 that can beused for performing JOIN value comparisons according to animplementation. The computer 202 can be a stand-alone computer system ora component of an example distributed computing system (EDCS) forperforming JOIN value comparisons according to an implementation. Theillustrated computer 202 can encompass any computing device such as aserver, desktop computer, laptop/notebook computer, wireless data port,smart phone, personal data assistant (PDA), tablet computing device, oneor more processors within these devices, or any other suitableprocessing device, including both physical and/or virtual instances ofthe computing device. Additionally, the computer 202 may comprise acomputer that includes an input device, such as a keypad, keyboard,touch screen, or other device that can accept user information, and anoutput device that conveys information associated with the operation ofthe computer 202, including digital data, visual and/or audioinformation, or a GUI.

The computer 202 can process for/serve as a client, a server, a UIlayer, an application, and/or any other component of the EDCS. Theillustrated computer 202 is communicably coupled with a network 220. Insome implementations, one or more components of the computer 202 may beconfigured to operate within a cloud-computing-based environment.

At a high level, the computer 202 is an electronic computing deviceoperable to receive, transmit, process, store, or manage data andinformation associated with the EDCS. According to some implementations,the computer 202 may also include or be communicably coupled with acloud-computing server, application server, e-mail server, web server,caching server, streaming data server, business intelligence (BI)server, and/or other server.

The computer 202 can receive requests over network 220 from a clientapplication (e.g., a mobile UI, web-based application UI, and/or adesktop application executing on this or another computer 202 in use bya user/customer) and respond to the received requests by processing thesaid requests in an appropriate software application. For example, thecomputer 202 can receive a query from a user to perform a JOIN operationof two or more tables stored in the database 206. The JOIN operation canbe conditioned on a predicate (e.g., the above-described examplepredicate “A.x=B.y”). In addition, requests may also be sent to thecomputer 202 from internal users (e.g., from a command console or byother appropriate access method), external or third parties, otherautomated applications, as well as any other appropriate entities,individuals, systems, or computers.

Each of the components of the computer 202 can communicate using asystem bus 203. In some implementations, any and/or all the componentsof the computer 202, both hardware and/or software, may interface witheach other and/or the interface 204 over the system bus 203 using an API212 and/or a service layer 214. The API 212 may include specificationsfor routines, data structures, and object classes. The API 212 may beeither computer language-independent or -dependent and refer to acomplete interface, a single function, or even a set of APIs. Theservice layer 214 provides software services to the computer 202 and/orthe EDCS. The functionality of the computer 202 may be accessible forall service consumers using this service layer. Software services, suchas those provided by the service layer 214, provide reusable, definedbusiness functionalities through a defined interface. For example, theinterface may be software written in JAVA, C++, or other suitablelanguage providing data in extensible markup language (XML) format orother suitable format. While illustrated as an integrated component ofthe computer 202, alternative implementations may illustrate the API 212and/or the service layer 214 as stand-alone components in relation toother components of the computer 202 and/or EDCS. Moreover, any or allparts of the API 212 and/or the service layer 214 may be implemented aschild or sub-modules of another software module, enterprise application,or hardware module without departing from the scope of this disclosure.

The computer 202 includes an interface 204. Although illustrated as asingle interface 204 in FIG. 2, two or more interfaces 204 may be usedaccording to particular needs, desires, or particular implementations ofthe computer 202 and/or EDCS. The interface 204 is used by the computer202 for communicating with other systems in a distributedenvironment—including within the EDCS—connected to the network 220.Generally, the interface 204 comprises logic encoded in software and/orhardware in a suitable combination and operable to communicate with thenetwork 220. More specifically, the interface 204 may comprise softwaresupporting one or more communication protocols associated withcommunications such that the network 220 or interface's hardware isoperable to communicate physical signals within and outside of theillustrated EDCS.

The computer 202 includes a processor 205. Although illustrated as asingle processor 205 in FIG. 2, two or more processors may be usedaccording to particular needs, desires, or particular implementations ofthe computer 202 and/or the EDCS. Generally, the processor 205 executesinstructions and manipulates data to perform the operations of thecomputer 202. Specifically, the processor 205 executes the functionalityrequired for performing JOIN value comparisons.

The computer 202 also includes a database 206 and memory 208 that holddata for the computer 202 and/or other components of the EDCS. Althoughillustrated as a single database 206 and memory 208 in FIG. 2, two ormore databases 206 and memories 208 may be used according to particularneeds, desires, or particular implementations of the computer 202 and/orthe EDCS. While database 206 and memory 208 are illustrated as integralcomponents of the computer 202, in alternative implementations, thedatabase 206 and memory 208 can be external to the computer 202 and/orthe EDCS. In some implementations, the database 206 can be aconventional database or an in-memory database, or a mix of both. Insome implementations, the database 206 can be a column-store database ora row-store database, or a mix of both. In some implementations, thedatabase 206 and memory 208 can be combined into one component.

The application 207 is an algorithmic software engine providingfunctionality according to particular needs, desires, or particularimplementations of the computer 202 and/or the EDCS, particularly withrespect to functionalities required for performing JOIN valuecomparisons. Further, although illustrated as a single application 207,the application 207 may be implemented as multiple applications 207 onthe computer 202. In addition, although illustrated as integral to thecomputer 202, in alternative implementations, the application 207 can beexternal to the computer 202 and/or the EDCS.

There may be any number of computers 202 associated with, or externalto, the EDCS and communicating over network 220. Further, the term“client,” “user,” and other appropriate terminology may be usedinterchangeably as appropriate without departing from the scope of thisdisclosure. Moreover, this disclosure contemplates that many users mayuse one computer 202, or that one user may use multiple computers 202.

Implementations of the subject matter and the functional operationsdescribed in this specification can be implemented in digital electroniccircuitry, in tangibly embodied computer software or firmware, incomputer hardware, including the structures disclosed in thisspecification and their structural equivalents, or in combinations ofone or more of them. Implementations of the subject matter described inthis specification can be implemented as one or more computer programs,i.e., one or more modules of computer program instructions encoded on atangible, non-transitory computer-storage medium for execution by, or tocontrol the operation of, data processing apparatus. Alternatively or inaddition, the program instructions can be encoded on an artificiallygenerated propagated signal, e.g., a machine-generated electrical,optical, or electromagnetic signal that is generated to encodeinformation for transmission to suitable receiver apparatus forexecution by a data processing apparatus. The computer-storage mediumcan be a machine-readable storage device, a machine-readable storagesubstrate, a random or serial access memory device, or a combination ofone or more of them.

The terms “data processing apparatus,” “computer,” and/or “electroniccomputer device” (or equivalent as understood by one of ordinary skillin the art) refer to data processing hardware and encompass all kinds ofapparatus, devices, and machines for processing data, including by wayof example, a programmable processor, a computer, or multiple processorsor computers. The apparatus can also be or further include specialpurpose logic circuitry, e.g., a central processing unit (CPU), an FPGA(field programmable gate array), or an ASIC (application-specificintegrated circuit). In some implementations, the data processingapparatus and/or special purpose logic circuitry may be hardware-basedand/or software-based. The apparatus can optionally include code thatcreates an execution environment for computer programs, e.g., code thatconstitutes processor firmware, a protocol stack, a database managementsystem, an operating system, or a combination of one or more of them.The present disclosure contemplates the use of data processingapparatuses with or without conventional operating systems, for exampleLINUX, UNIX, WINDOWS, MAC OS, ANDROID, IOS or any other suitableconventional operating system.

A computer program, which may also be referred to or described as aprogram, software, a software application, a module, a software module,a script, or code, can be written in any form of programming language,including compiled or interpreted languages, or declarative orprocedural languages, and it can be deployed in any form, including as astand-alone program or as a module, component, subroutine, or other unitsuitable for use in a computing environment. A computer program may, butneed not, correspond to a file in a file system. A program can be storedin a portion of a file that holds other programs or data, e.g., one ormore scripts stored in a markup language document, in a single filededicated to the program in question, or in multiple coordinated files,e.g., files that store one or more modules, sub-programs, or portions ofcode. A computer program can be deployed to be executed on one computeror on multiple computers that are located at one site or distributedacross multiple sites and interconnected by a communication network.While portions of the programs illustrated in the various figures areshown as individual modules that implement the various features andfunctionality through various objects, methods, or other processes, theprograms may instead include a number of sub-modules, third-partyservices, components, libraries, and such, as appropriate. Conversely,the features and functionality of various components can be combinedinto single components as appropriate.

The processes and logic flows described in this specification can beperformed by one or more programmable computers executing one or morecomputer programs to perform functions by operating on input data andgenerating output. The processes and logic flows can also be performedby, and apparatus can also be implemented as, special purpose logiccircuitry, e.g., a CPU, an FPGA, or an ASIC.

Computers suitable for the execution of a computer program can be basedon general or special purpose microprocessors, both, or any other kindof CPU. Generally, a CPU will receive instructions and data from aread-only memory (ROM) or a random access memory (RAM) or both. Theessential elements of a computer are a CPU for performing or executinginstructions and one or more memory devices for storing instructions anddata. Generally, a computer will also include, or be operatively coupledto, receive data from or transfer data to, or both, one or more massstorage devices for storing data, e.g., magnetic, magneto-optical disks,or optical disks. However, a computer need not have such devices.Moreover, a computer can be embedded in another device, e.g., a mobiletelephone, a personal digital assistant (PDA), a mobile audio or videoplayer, a game console, a global positioning system (GPS) receiver, or aportable storage device, e.g., a universal serial bus (USB) flash drive,to name just a few.

Computer-readable media (transitory or non-transitory, as appropriate)suitable for storing computer program instructions and data include allforms of non-volatile memory, media and memory devices, including by wayof example semiconductor memory devices, e.g., erasable programmableread-only memory (EPROM), electrically erasable programmable read-onlymemory (EEPROM), and flash memory devices; magnetic disks, e.g.,internal hard disks or removable disks; magneto-optical disks; andCD-ROM, DVD+/-R, DVD-RAM, and DVD-ROM disks. The memory may storevarious objects or data, including caches, classes, frameworks,applications, backup data, jobs, web pages, web page templates, databasetables, repositories storing business and/or dynamic information, andany other appropriate information including any parameters, variables,algorithms, instructions, rules, constraints, or references thereto.Additionally, the memory may include any other appropriate data, such aslogs, policies, security or access data, reporting files, as well asothers. The processor and the memory can be supplemented by, orincorporated in, special purpose logic circuitry.

To provide for interaction with a user, implementations of the subjectmatter described in this specification can be implemented on a computerhaving a display device, e.g., a CRT (cathode ray tube), LCD (liquidcrystal display), LED (Light Emitting Diode), or plasma monitor, fordisplaying information to the user and a keyboard and a pointing device,e.g., a mouse, trackball, or trackpad by which the user can provideinput to the computer. Input may also be provided to the computer usinga touchscreen, such as a tablet computer surface with pressuresensitivity, a multi-touch screen using capacitive or electric sensing,or other type of touchscreen. Other kinds of devices can be used toprovide for interaction with a user as well; for example, feedbackprovided to the user can be any form of sensory feedback, e.g., visualfeedback, auditory feedback, or tactile feedback; and input from theuser can be received in any form, including acoustic, speech, or tactileinput. In addition, a computer can interact with a user by sendingdocuments to and receiving documents from a device that is used by theuser; for example, by sending web pages to a web browser on a user'sclient device in response to requests received from the web browser.

The term “graphical user interface,” or “GUI,” may be used in thesingular or the plural to describe one or more graphical user interfacesand each of the displays of a particular graphical user interface.Therefore, a GUI may represent any graphical user interface, includingbut not limited to, a web browser, a touch screen, or a command lineinterface (CLI) that processes information and efficiently presents theinformation results to the user. In general, a GUI may include aplurality of user interface (UI) elements, some or all associated with aweb browser, such as interactive fields, pull-down lists, and buttonsoperable by the business suite user. These and other UI elements may berelated to or represent the functions of the web browser.

Implementations of the subject matter described in this specificationcan be implemented in a computing system that includes a back-endcomponent, e.g., as a data server, or that includes a middlewarecomponent, e.g., an application server, or that includes a front-endcomponent, e.g., a client computer having a graphical user interface ora Web browser through which a user can interact with an implementationof the subject matter described in this specification, or anycombination of one or more such back-end, middleware, or front-endcomponents. The components of the system can be interconnected by anyform or medium of wireline and/or wireless digital data communication,e.g., a communication network. Examples of communication networksinclude a local area network (LAN), a radio access network (RAN), ametropolitan area network (MAN), a wide area network (WAN), WorldwideInteroperability for Microwave Access (WIMAX), a wireless local areanetwork (WLAN) using, for example, 802.11a/b/g/n and/or 802.20, all or aportion of the Internet, and/or any other communication system orsystems at one or more locations. The network may communicate with, forexample, Internet Protocol (IP) packets, Frame Relay frames,Asynchronous Transfer Mode (ATM) cells, voice, video, data, and/or othersuitable information between network addresses.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

In some implementations, any or all of the components of the computingsystem, both hardware and/or software, may interface with each otherand/or the interface using an application programming interface (API)and/or a service layer. The API may include specifications for routines,data structures, and object classes. The API may be either computerlanguage-independent or -dependent and refer to a complete interface, asingle function, or even a set of APIs. The service layer providessoftware services to the computing system. The functionality of thevarious components of the computing system may be accessible for allservice consumers using this service layer. Software services providereusable, defined business functionalities through a defined interface.For example, the interface may be software written in JAVA, C++, orother suitable language providing data in extensible markup language(XML) format or other suitable format. The API and/or service layer maybe an integral and/or a stand-alone component in relation to othercomponents of the computing system. Moreover, any or all parts of theservice layer may be implemented as child or sub-modules of anothersoftware module, enterprise application, or hardware module withoutdeparting from the scope of this disclosure.

While this specification contains many specific implementation details,these should not be construed as limitations on the scope of anyinvention or on the scope of what may be claimed, but rather asdescriptions of features that may be specific to particularimplementations of particular inventions. Certain features that aredescribed in this specification in the context of separateimplementations can also be implemented in combination in a singleimplementation. Conversely, various features that are described in thecontext of a single implementation can also be implemented in multipleimplementations separately or in any suitable sub-combination. Moreover,although features may be described above as acting in certaincombinations and even initially claimed as such, one or more featuresfrom a claimed combination can in some cases be excised from thecombination, and the claimed combination may be directed to asub-combination or variation of a sub-combination.

Similarly, while operations are depicted in the drawings in a particularorder, this should not be understood as requiring that such operationsbe performed in the particular order shown or in sequential order, orthat all illustrated operations be performed, to achieve desirableresults. In certain circumstances, multitasking and parallel processingmay be advantageous. Moreover, the separation and/or integration ofvarious system modules and components in the implementations describedabove should not be understood as requiring such separation and/orintegration in all implementations, and it should be understood that thedescribed program components and systems can generally be integratedtogether in a single software product or packaged into multiple softwareproducts.

Particular implementations of the subject matter have been described.Other implementations, alterations, and permutations of the describedimplementations are within the scope of the following claims as will beapparent to those skilled in the art. For example, the actions recitedin the claims can be performed in a different order and still achievedesirable results.

Accordingly, the above description of example implementations does notdefine or constrain this disclosure. Other changes, substitutions, andalterations are also possible without departing from the spirit andscope of this disclosure.

What is claimed is:
 1. A computer-implemented method comprising:converting, by operation of a computer system, a first value of a firstdata type into a second value of a second data type, wherein the firstvalue is a value of a first attribute of a first table; converting, byoperation of a computer system, the second value of the second data typeinto a third value of a third data type; converting, by operation of acomputer system, a fourth value of the third data type into a fifthvalue of the second data type, wherein the fourth value is a value of asecond attribute of a second table; converting, by operation of acomputer system, the fifth value of the second data type into a sixthvalue of the first data type; and performing JOIN operations of thefirst table and the second table in response to determining that thefirst value equals the sixth value, and the fourth value equals thethird value.
 2. The method of claim 1, further comprising: determining,by operation of the computer system, whether the second data type isable to be converted to the third data type; and wherein converting thesecond value of the second data type into the third value of a thirddata type comprises converting the second value of the second data typeinto the third value of a third data type in response to determiningthat the second data type is able to be converted to the third datatype.
 3. The method of claim 1, further comprising: determining, byoperation of the computer system, whether the second data type is ableto be converted to the third data type; and refraining from performingJOIN operations of the first table and the second table in response todetermining that the second data type is not able to be converted to thethird data type.
 4. The method of claim 1, further comprising:determining, by operation of the computer system, whether the seconddata type is able to be converted to the first data type; and whereinconverting the fifth value of the second data type into the sixth valueof the first data type comprises converting the fifth value of thesecond data type into the sixth value of the first data type in responseto determining the second data type is able to be converted to the firstdata type.
 5. The method of claim 1, further comprising: determining, byoperation of the computer system, whether the second data type is ableto be converted to the first data type; and refraining from performingJOIN operations of the first table and the second table in response todetermining that the second data type is not able to be converted to thefirst data type.
 6. The method of claim 1, wherein the second data typecomprises a string type.
 7. The method of claim 1, wherein each of thefirst data type and the third data type comprises a numeric type.
 8. Anon-transitory, computer-readable medium storing computer-readableinstructions executable by a computer and configured to: convert a firstvalue of a first data type into a second value of a second data type,wherein the first value is a value of a first attribute of a firsttable; convert the second value of the second data type into a thirdvalue of a third data type; convert a fourth value of the third datatype into a fifth value of the second data type, wherein the fourthvalue is a value of a second attribute of a second table; convert thefifth value of the second data type into a sixth value of the first datatype; and perform JOIN operations of the first table and the secondtable in response to determining that the first value equals the sixthvalue, and the fourth value equals the third value.
 9. The medium ofclaim 8, further comprising instructions operable to: determine whetherthe second data type is able to be converted to the third data type; andwherein converting the second value of the second data type into thethird value of a third data type comprises converting the second valueof the second data type into the third value of a third data type inresponse to determining that the second data type is able to beconverted to the third data type.
 10. The medium of claim 8, furthercomprising instructions operable to: determine whether the second datatype is able to be converted to the third data type; and refrain fromperforming JOIN operations of the first table and the second table inresponse to determining that the second data type is not able to beconverted to the third data type.
 11. The medium of claim 8, furthercomprising instructions operable to: determine whether the second datatype is able to be converted to the first data type; and whereinconverting the fifth value of the second data type into the sixth valueof the first data type comprises converting the fifth value of thesecond data type into the sixth value of the first data type in responseto determining the second data type is able to be converted to the firstdata type.
 12. The medium of claim 8, further comprising instructionsoperable to: determine whether the second data type is able to beconverted to the first data type; and refrain from performing JOINoperations of the first table and the second table in response todetermining that the second data type is not able to be converted to thefirst data type.
 13. The medium of claim 8, wherein the second data typecomprises a string type.
 14. The medium of claim 8, wherein each of thefirst data type and the third data type comprises a numeric type.
 15. Asystem, comprising: a memory; at least one hardware processorinteroperably coupled with the memory and configured to: convert a firstvalue of a first data type into a second value of a second data type,wherein the first value is a value of a first attribute of a firsttable; convert the second value of the second data type into a thirdvalue of a third data type; convert a fourth value of the third datatype into a fifth value of the second data type, wherein the fourthvalue is a value of a second attribute of a second table; convert thefifth value of the second data type into a sixth value of the first datatype; and perform JOIN operations of the first table and the secondtable in response to determining that the first value equals the sixthvalue, and the fourth value equals the third value.
 16. The system ofclaim 15, further configured to: determine whether the second data typeis able to be converted to the third data type; and wherein convertingthe second value of the second data type into the third value of a thirddata type comprises converting the second value of the second data typeinto the third value of a third data type in response to determiningthat the second data type is able to be converted to the third datatype.
 17. The system of claim 15, further configured to: determinewhether the second data type is able to be converted to the third datatype; and refrain from performing JOIN operations of the first table andthe second table in response to determining that the second data type isnot able to be converted to the third data type.
 18. The system of claim15, further configured to: determine whether the second data type isable to be converted to the first data type; and wherein converting thefifth value of the second data type into the sixth value of the firstdata type comprises converting the fifth value of the second data typeinto the sixth value of the first data type in response to determiningthe second data type is able to be converted to the first data type. 19.The system of claim 15, further configured to: determine whether thesecond data type is able to be converted to the first data type; andrefrain from performing JOIN operations of the first table and thesecond table in response to determining that the second data type is notable to be converted to the first data type.
 20. The system of claim 15,wherein the second data type comprises a string type.
 21. The system ofclaim 15, wherein each of the first data type and the third data typecomprises a numeric type.